# import json
# import textwrap
# import time
#
# from django_redis import get_redis_connection
# from langchain_text_splitters import RecursiveCharacterTextSplitter
# from redis import Redis
#
# # from myApp.utils.FuZiModel import model, tokenizer, run_fuzi
# # from myApp.utils.ChatGlmModel import run_glm
# from utils.ApiModel import ollama_chat, fuzi_chat, fuzi_stop, ollama_chat_all
#
# from utils.old.ChatGlmModel import run_glm_all, run_glm
#
# redis_client = get_redis_connection("default")
#
# task_1_prompt = """
# 请基于Elasticsearch检索的需求，分析提供的案件描述，并完成以下任务：
#
# 1. 确定案件描述中的主要争议焦点。
# 2. 提取案件描述中的核心事实。
# 3. 列出与案件描述内容相关的关键词。
#
# 案件描述内容：
# [@用户输入@]
#
# 请根据上述指示，输出以下信息，仅以JSON格式，确保输出结构清晰且信息完整：
#
# {
#   "DisputeFocus": "在此填入文本中的主要争议焦点，用一句话清晰表达",
#   "CoreFacts": "在此总结文本中描述的核心事实，尽量用简洁的语言表达。",
#   "Keywords": [
#     "关键词1",
#     "关键词2",
#     // 根据文本内容添加更多关键词，确保关键词与案件相关且具有辅助检索的价值"
#   ]
# }
#
# 请注意：输出仅限JSON格式，不包含其他任何解释或文本内容。
# """
#
#
#
# task_1_text = """
# - 根据您提供的信息，本案主要争议焦点为：`@DisputeFocus@`
#
# - 案件描述中的核心事实为：`@CoreFacts@`
#
# - 与案件描述内容相关的关键词有：`@Keywords@`
#
# """
#
# task_2_prompt = """
# 请阅读以下两个司法案例的描述，并简要分析它们之间的主要相似点和差异点。专注于案例的法律背景、涉及的当事人、事件地点和时间、以及判决结果等关键方面。
#
# 案例A：
# [@用户输入@]
#
# 案例B：
# [@检索事件@]
#
# 您需要使用MarkDown列表格式列出相似点和差异点，具体格式如下：
#
# - **相似点**：
#     - 相似点1
#     - 相似点2
#     - ...
#
# - **差异点**：
#     - 差异点1
#     - 差异点2
#     - ...
#
# 请保持您的分析简洁明了，直接列出关键对比点，无需详细描述。
# 注意不要输出：```markdown
#
# """
#
#
#
#
# task_2_prompt_splitter = """
# 用三句话概括三引号内的文本，100字以内。
# \"\"\"@案件文档@\"\"\"
# """
#
#
#
#
# def is_json(myjson):
#     try:
#         json_object = json.loads(myjson)
#     except json.JSONDecodeError:  # 对于Python3.6及之后的版本，使用json.JSONDecodeError
#         return False
#     except ValueError as e:  # 对于Python3.5及之前的版本，使用ValueError
#         return False
#     return True
#
#
# def case_model(text, assistant_message_id):
#     while True:
#         task_1_response = run_glm_all(task_1_prompt.replace("@用户输入@", text), assistant_message_id)
#
#         # task_1_response = run_glm_all(task_1_prompt.replace("@用户输入@", text), assistant_message_id, model_name)
#         task_1_response = task_1_response.replace("```json", "").replace("```", "")
#         if not is_json(task_1_response):
#             print("不是json")
#             print(task_1_response)
#             continue
#         task_1_json = json.loads(task_1_response)
#         break
#
#     dispute_focus = task_1_json["DisputeFocus"]
#     core_facts = task_1_json["CoreFacts"]
#     keywords = task_1_json["Keywords"]
#     response = task_1_text.replace("@DisputeFocus@", dispute_focus).replace("@CoreFacts@", core_facts).replace(
#         "@Keywords@",
#         "" + "、".join(keywords) + "")
#     yield json.dumps({'text': response}) + "&&##&&"
#
#     case_page_info, _ = CaseDocument.search_page(task_1_response, 1, 2, 1)
#     i = 1
#     for case_info in case_page_info:
#         stop_stream = redis_client.get(assistant_message_id)
#         if stop_stream == "end":
#             break
#
#         task_2_docs = textwrap.wrap(case_info.full_text, 5000)
#         task_2_array = []
#
#         keywords_string = "/".join(keywords)
#         yield json.dumps({
#             'text': f"### [{i}. {case_info.case_name}](caseDetail?"
#                     f"caseId={case_info.id})\n"}) + "&&##&&"
#
#         for doc in task_2_docs:
#             stop_stream = redis_client.get(assistant_message_id)
#             if stop_stream == "end":
#                 break
#             res = run_glm_all(task_2_prompt_splitter.replace("@案件文档@", doc), assistant_message_id)
#             task_2_array.append(res)
#             # print(res)
#         task_2_prompt_1 = task_2_prompt.replace("@检索事件@", "。".join(task_2_array)).replace("@用户输入@", text)
#         for data in run_glm(task_2_prompt_1, assistant_message_id):
#             yield data  # 直接传递 run_glm 生成的每个字节流项
#         #     分割案例
#         yield json.dumps({'text': "\n\n"}) + "&&##&&"
#         i += 1
#         # 显示3个案例
#         if i == 3:
#             break
#     # 更多案例
#     yield json.dumps({
#         'text': f"\n\n[更多案例 >](searchCase?"
#                 f"DisputeFocus={dispute_focus}&CoreFacts={core_facts}"
#                 f"&Keywords={keywords_string})\n"}) + "&&##&&"
